The present invention relates to computer animation, and, more particularly, to a method and apparatus for rending graphical images using distributed processing.
Computer animation often is used to simulate real-world environments and to allow interaction between users of the computer System and the animated worlds illustrated. For example, U.S. patent application Ser. No. 08/133,802 filed Oct. 8, 1992, which is a continuation of Ser. No. 07/535,253, filed on Jun. 7, 1990, entitled Virtual Reality Network discloses a virtual reality network wherein users perceive and interact with a virtual environment. In one application, two apprentice automobile mechanics may use the virtual reality network to work on an animated automobile engine.
In order to adequately simulate a real-world environment, a great deal of information must be associated with each animated object so that the objects have the proper real-world appearance and interactions. Using the automobile engine example noted above, it is necessary to define a large number of parts, some which move and others which are stationary. At the minimum, the animator must define each part and its constraints of motion. Of course, a part's motion may be dependent upon some other part. Thus, cataloging and expressing this information adequately and correctly can be quite complex. One method which the animator may use is to define a hierarchical tree structure, a portion of which is shown in FIG. 1. This is the method used in the above-referenced patent application, and it is accomplished by the swivel-3D program referred to therein. The hierarchical tree comprises a plurality of linked nodes, each node being associated with a part and/or motion type. Each node may define the proper position of a part, relative to some other node, and its range of motion. Of course, each object still has attributes associated with it separate and apart from the tree description, such as texture and color. Because each node is linked to at least one other node, the action of each node is dependent upon the constraints defined for the nodes located higher up the tree. Ultimately, each node traces a connection to a fixed reference point. The tree thus defines relationships of motion between all elements of the animated scene.
Once the animated world has been defined, real-world data must be coupled to it. For example, the movements of the real-world mechanics noted above must produce corresponding movements by the mechanics in the animated world. One way to do this is to have a computer receive various inputs describing forces which are to act upon the various elements of the graphical scene and to couple the input data to the various nodes. The "body electric" program accomplishes this task in the above-identified patent application. The graphics computer then renders an initial image and uses the tree structure and input data to render successive images at a rate of about 60 images per second. To allow the images to be rendered as quickly as possible, it is preferable to update each current image with new input data rather than render the entire image from the beginning.
FIG. 2 is a block diagram of an animation system 10 such as that shown in the above-identified patent application. In this system, the control computer 12 has a copy of the hierarchy tree and generates a list of nodes whose values have changed since the last image was rendered. In this embodiment, a special interactive glove 14 and a head-mounted display 16 provides real-world inputs to control computer 12. Of course, other input devices may be used as well. The glove 14 includes sensors (not shown) which provide position and flex information to an RS232 interface 20 over a bus 19. The head-mounted display also includes sensors to provide position data to an RS232 interface 21 over a bus 22. The input data from glove 14 and head-mounted display 16 are communicated to control computer 12 over buses 26 and 28. Control computer 12 then generates a list of nodes whose values have changed since the last image was rendered and provides this list to two separate graphics computers 30 and 34 over an ethernet coupling 38. The graphics computers 30 and 34 render the updated image in response to the list of changed nodes. Each graphics computer provides the images for one eye in standard NTSC format. The images are then communicated to head-mounted display 16 over buses 50 and 54, respectively. Synchronizing circuits 42 and 46 provide synchronizing signals over buses 58, 62, respectively, to indicate that its associated graphics computer 30, 34 has completed rendering its image and that another changed node list can be processed.
As the complexity of the graphical scene increases, rendering images within acceptable animation limits becomes more difficult both in terms of the number of objects to be displayed and the time it takes for the graphics computers to render the image. Thus, a user With a limited graphics library or processing capability will be unable to create more intricate animated environments.